package com.wts.exam.service;

import com.wts.exam.domain.PaperCard;
import com.wts.exam.domain.ex.PaperUnit;
import com.farm.core.sql.query.DataQuery;
import com.farm.core.auth.domain.LoginUser;

/* *
 *功能：答题卡服务层接口
 *详细：
 *
 *版本：v0.1
 *作者：FarmCode代码工程
 *日期：20150707114057
 *说明：
 */
public interface PapercardServiceInter {
	/**
	 * 新增实体管理实体
	 * 
	 * @param entity
	 */
	public PaperCard insertPapercardEntity(PaperCard entity, LoginUser user);

	/**
	 * 修改实体管理实体
	 * 
	 * @param entity
	 */
	public PaperCard editPapercardEntity(PaperCard entity, LoginUser user);

	/**
	 * 删除实体管理实体
	 * 
	 * @param entity
	 */
	public void deletePapercardEntity(String id, LoginUser user);

	/**
	 * 获得实体管理实体
	 * 
	 * @param id
	 * @return
	 */
	public PaperCard getPapercardEntity(String id);

	/**
	 * 创建一个基本查询用来查询当前实体管理实体
	 * 
	 * @param query
	 *            传入的查询条件封装
	 * @return
	 */
	public DataQuery createPapercardSimpleQuery(DataQuery query);

	/**
	 * 初始化一个答题卡，创建或者获得（第一次访问就创建）
	 * 
	 * @param paperid
	 *            试卷id
	 * @param roomId
	 *            答题室id
	 * @param currentUser
	 *            当前用户
	 * @return
	 */
	public PaperCard creatOrGetPaperCard(String paperid, String roomId, LoginUser currentUser);

	/**
	 * 获得人员的答题卡信息
	 * 
	 * @param paperid
	 * @param roomid
	 * @param currentUser
	 * @return
	 */
	public PaperCard loadPaperCard(String paperid, String roomid, LoginUser currentUser);

	/**
	 * 保存一道考题的答案
	 * 
	 * @param paperid
	 * @param roomid
	 * @param versionid
	 * @param answerid
	 * @param value
	 * @param currentUser
	 * @return 是否有答案（如果用户提交一个空答案，则认为用户没有做该题）
	 */
	public boolean savePaperCardVal(String paperid, String roomid, String versionid, String answerid, String value,
			LoginUser currentUser);

	/**
	 * 结束考试
	 * 
	 * @param cardId
	 * @param currentUser
	 */
	public void finishExam(String cardId, LoginUser currentUser);

	/**
	 * 从答题卡中加载试卷的值(用于试卷展示)
	 * 
	 * @param paper
	 *            试卷对象
	 * @param card
	 *            答题卡
	 */
	public void loadCardVal(PaperUnit paper, PaperCard card);
}